"""
用户模型
"""
from comment.models import db
from datetime import datetime
from werkzeug.security import generate_password_hash, check_password_hash


class User(db.Model):
    __tablename__ = 't_user'
    id = db.Column(db.BigInteger, primary_key=True, autoincrement=True)
    # doc为默认值
    username = db.Column(db.String(64), doc='用户名')
    password = db.Column(db.String(128), doc='密码')
    icon = db.Column(db.String(5000), doc='用户头像图片')
    email = db.Column(db.String(100), doc='邮箱地址')
    nick_name = db.Column(db.String(200), doc='昵称')
    note = db.Column(db.String(500), doc='备注')
    phone = db.Column(db.String(11), doc='手机号')
    login_time = db.Column(db.DateTime, default=datetime.now(), doc='登录时间')
    create_time = db.Column(db.DateTime, default=datetime.now(), doc='用户注册的时间')
    # onupdate记录用户修改的时间
    upate_time = db.Column(db.DateTime, default=datetime.now(), onupdate=datetime.now(), doc='用户修改的时间')
    status = db.Column(db.Integer, doc='用户状态')  # 0状态正常

    # 对密码进行加密 使用hash算法
    @property
    def pwd(self):
        """
        get方法
        :return:
        """
        return self.password

    @pwd.setter
    def pwd(self, pwd):
        """
        加密
        :param pwd: 密码的明文
        :return: 返回加密后的密文
        """
        self.password = generate_password_hash(pwd)

    def check_password(self, passwod):
        """
        比较密文是否一致
        :param passwod: 明文
        :return:
        """
        return check_password_hash(self.password, passwod)
